package online.misscl.lsy.service.impl;

import com.github.yulichang.wrapper.MPJLambdaWrapper;
import online.misscl.lsy.entity.MessageBox;
import online.misscl.lsy.entity.VaccineUser;
import online.misscl.lsy.entity.dto.MessageBoxQueryDto;
import online.misscl.lsy.entity.dto.MessageBoxUpdateDto;
import online.misscl.lsy.entity.dto.vo.FrontMessageBoxVo;
import online.misscl.lsy.entity.dto.vo.MessageBoxVo;
import online.misscl.lsy.mapper.MessageBoxMapper;
import online.misscl.lsy.service.MessageBoxService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * 留言箱表 服务实现类
 * </p>
 *
 * @author misscl
 * @since 2023/03/11 11:14
 */
@Service
public class MessageBoxServiceImpl extends ServiceImpl<MessageBoxMapper, MessageBox> implements MessageBoxService {


    @Override
    public List<MessageBoxVo> messageBoxQueryList(MessageBoxQueryDto messageBoxQueryDto) {
        MPJLambdaWrapper<MessageBox> mp = new MPJLambdaWrapper<MessageBox> ();
        mp.selectAll(MessageBox.class)
                .leftJoin(VaccineUser.class,VaccineUser::getUserId,MessageBox::getUserId)
                .select(VaccineUser::getUsername,VaccineUser::getName);
        return baseMapper.selectJoinList(MessageBoxVo.class,mp);
    }

    @Override
    public int deleteMessageBox(Integer userId) {
        return baseMapper.deleteById(userId);
    }

    @Override
    public int updateMessageBox(MessageBoxUpdateDto messageBoxUpdateDto) {
        MessageBox messageBox =new MessageBox();
        BeanUtils.copyProperties(messageBoxUpdateDto,messageBox);
        return baseMapper.updateById(messageBox);
    }

    @Override
    public int saveMessageBox(MessageBoxUpdateDto messageBoxUpdateDto,Integer userId) {
        MessageBox messageBox =new MessageBox();
        BeanUtils.copyProperties(messageBoxUpdateDto,messageBox);
        messageBox.setUserId(userId);
        return baseMapper.insert(messageBox);
    }

    @Override
    public List<FrontMessageBoxVo> messageBoxList() {
        MPJLambdaWrapper<MessageBox> mp = new MPJLambdaWrapper<MessageBox> ();
        mp.selectAll(MessageBox.class)
                .leftJoin(VaccineUser.class,VaccineUser::getUserId,MessageBox::getUserId)
                .select(VaccineUser::getUsername,VaccineUser::getName);
        return baseMapper.selectJoinList(FrontMessageBoxVo.class,mp);
    }
}
